home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rwvector.lha / RWVector2.1 / src / mathpack / dcfftf.f < prev    next >
Text File  |  1989-08-14  |  3KB  |  74 lines

  1.       subroutine dcfftf (n,c,wsave)
  2. c
  3. c     Double precision version.  -tk
  4. c
  5. C***BEGIN PROLOGUE  CFFTF
  6. C***REVISION DATE  811015   (YYMMDD)
  7. C***CATEGORY NO.  D6
  8. C***KEYWORDS FFT,FAST FOURIER TRANSFORM,COMPLEX
  9. C***DATE WRITTEN  FEBRUARY 1978
  10. C***AUTHOR  SWARZTRAUBER P.N. (NCAR)
  11. C***PURPOSE
  12. C  FORWARD FFT OF A COMPLEX PERIODIC SEQUENCE
  13. C***DESCRIPTION
  14. C     *****************************************************************
  15. C
  16. C     SUBROUTINE CFFTF(N,C,WSAVE)
  17. C
  18. C     *****************************************************************
  19. C
  20. C     SUBROUTINE CFFTF COMPUTES THE FORWARD COMPLEX DISCRETE FOURIER
  21. C     TRANSFORM (THE FOURIER ANALYSIS). EQUIVALENTLY , CFFTF COMPUTES
  22. C     THE FOURIER COEFFICIENTS OF A COMPLEX PERIODIC SEQUENCE.
  23. C     THE TRANSFORM IS DEFINED BELOW AT OUTPUT PARAMETER C.
  24. C
  25. C     THE TRANSFORM IS NOT NORMALIZED. TO OBTAIN A NORMALIZED TRANSFORM
  26. C     THE OUTPUT MUST BE DIVIDED BY N. OTHERWISE A CALL OF CFFTF
  27. C     FOLLOWED BY A CALL OF CFFTB WILL MULTIPLY THE SEQUENCE BY N.
  28. C
  29. C     THE ARRAY WSAVE WHICH IS USED BY SUBROUTINE CFFTF MUST BE
  30. C     INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE).
  31. C
  32. C     INPUT PARAMETERS
  33. C
  34. C
  35. C     N      THE LENGTH OF THE COMPLEX SEQUENCE C. THE METHOD IS
  36. C            MORE EFFICIENT WHEN N IS THE PRODUCT OF SMALL PRIMES. N
  37. C
  38. C     C      A COMPLEX ARRAY OF LENGTH N WHICH CONTAINS THE SEQUENCE
  39. C
  40. C     WSAVE   A REAL WORK ARRAY WHICH MUST BE DIMENSIONED AT LEAST 4N+1
  41. C             IN THE PROGRAM THAT CALLS CFFTF. THE WSAVE ARRAY MUST BE
  42. C             INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE) AND A
  43. C             DIFFERENT WSAVE ARRAY MUST BE USED FOR EACH DIFFERENT
  44. C             VALUE OF N. THIS INITIALIZATION DOES NOT HAVE TO BE
  45. C             REPEATED SO LONG AS N REMAINS UNCHANGED THUS SUBSEQUENT
  46. C             TRANSFORMS CAN BE OBTAINED FASTER THAN THE FIRST.
  47. C             THE SAME WSAVE ARRAY CAN BE USED BY CFFTF AND CFFTB.
  48. C
  49. C     OUTPUT PARAMETERS
  50. C
  51. C     C      FOR J=1,...,N
  52. C
  53. C                C(J)=THE SUM FROM K=1,...,N OF
  54. C
  55. C                      C(K)*EXP(-I*J*K*2*PI/N)
  56. C
  57. C                            WHERE I=SQRT(-1)
  58. C
  59. C     WSAVE   CONTAINS INITIALIZATION CALCULATIONS WHICH MUST NOT BE
  60. C             DESTROYED BETWEEN CALLS OF SUBROUTINE CFFTF OR CFFTB
  61. C
  62. C***REFERENCES
  63. C***ROUTINES CALLED  CFFTF1
  64. C***END PROLOGUE  CFFTF
  65.       implicit double precision (a-h,o-z)
  66.       dimension       c(1)       ,wsave(1)
  67. C***FIRST EXECUTABLE STATEMENT  CFFTF
  68.       if (n .eq. 1) return
  69.       iw1 = n+n+1
  70.       iw2 = iw1+n+n
  71.       call dcfftf1 (n,c,wsave,wsave(iw1),wsave(iw2))
  72.       return
  73.       end
  74.